Crate gif [−] [src]
GIF en- and decoding library
GIF en- and decoder written in Rust (API Documentation).
GIF encoding and decoding library
This library provides all functions necessary to de- and encode GIF files.
High level interface
The high level interface consists of the two types
Encoder
and Decoder
.
They as builders for the actual en- and decoders and can be used to set various
options beforehand.
Decoding GIF files
// Open the file use std::fs::File; use gif::SetParameter; let mut decoder = gif::Decoder::new(File::open("tests/samples/sample_1.gif").unwrap()); // Configure the decoder such that it will expand the image to RGBA. decoder.set(gif::ColorOutput::RGBA); // Read the file header let mut decoder = decoder.read_info().unwrap(); while let Some(frame) = decoder.read_next_frame().unwrap() { // Process every frame }
Encoding GIF files
The encoder can be used so save simple computer generated images:
use gif::{Frame, Encoder, Repeat, SetParameter}; use std::fs::File; use std::borrow::Cow; let color_map = &[0xFF, 0xFF, 0xFF, 0, 0, 0]; let (width, height) = (6, 6); let mut beacon_states = [[ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, ], [ 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, ]]; let mut image = File::create("tests/samples/beacon.gif").unwrap();; let mut encoder = Encoder::new(&mut image, width, height, color_map).unwrap(); encoder.set(Repeat::Infinite).unwrap(); for state in &beacon_states { let mut frame = Frame::default(); frame.width = width; frame.height = height; frame.buffer = Cow::Borrowed(&*state); encoder.write_frame(&frame).unwrap(); }
Frame::from_*
can be used to convert a true color image to a paletted
image with a maximum of 256 colors:
use std::fs::File; // Get pixel data from some source let mut pixels: Vec<u8> = vec![0; 30_000]; // Create frame from data let frame = gif::Frame::from_rgb(100, 100, &mut *pixels); // Create encoder let mut image = File::create("target/indexed_color.gif").unwrap(); let mut encoder = gif::Encoder::new(&mut image, frame.width, frame.height, &[]).unwrap(); // Write frame to file encoder.write_frame(&frame).unwrap();
C API
The C API is unstable and widely untested. It can be activated using the feature flag c_api
.
Structs
Decoder |
GIF decoder |
Encoder |
GIF encoder. |
Frame |
A GIF frame |
MemoryLimit |
Memory limit in bytes. |
Reader |
GIF decoder |
StreamingDecoder |
GIF decoder which supports streaming |
Enums
Block |
Known GIF block types |
ColorOutput |
Output mode for the image data |
Decoded |
Indicates whether a certain object has been decoded |
DecodingError |
Decoding error. |
DisposalMethod |
Disposal method |
Extension |
Known GIF extensions |
ExtensionData |
Extension data. |
Extensions |
Configures how extensions should be handled |
Repeat |
Number of repetitions |
Traits
Parameter |
Configuration parameter trait. |
SetParameter |
Implemented for objects that have parameters. |